
import React from 'react';
import { inject, observer } from 'mobx-react';
import {WeaDialog,WeaRightMenu,WeaNewScroll,WeaFormItem,WeaSearchGroup,WeaLocaleProvider} from "ecCom"
import {Button,message, Spin} from "antd"
import {WeaTableNew,WeaSwitch} from 'comsMobx';
const WeaTable = WeaTableNew.WeaTable;
const getLabel = WeaLocaleProvider.getLabel;
import {toJS} from "mobx"
import equal from 'deep-equal'
import TaskInfo from '../common/taskInfo'
import * as Task_Apis from '../../apis/task'

@observer
export default class TaskDialog extends React.Component{
    constructor(props) {
        super(props);
        this.state = {
            loading: false,
        }
    }
    componentWillReceiveProps(nextProps){
    }
    shouldComponentUpdate(){
        return true;
    }
    render(){
        const {contentStore} = this.props;
        const {visible,taskForm,taskInfo,title,handleDialog} = contentStore;
        return (
            <WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@2wg3ls`}  
                title={title  }
                visible={visible}
                buttons={this.getBottomButtons()}
                icon="icon-coms-project"
                iconBgcolor="#217346"
                onCancel={()=>{handleDialog(false)}}
                style={{width:1000,height:700}}>
                <WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@0bwnkl`} datas={this.getRightMenu()} onClick={this.onRightMenuClick.bind(this)}  >
                    <WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@5hfoke`} height={"100%"}>
                        <TaskInfo ecId={`${this && this.props && this.props.ecId || ''}_TaskInfo@d1nn6g`} listStore = {contentStore} form={taskForm} />
                    </WeaNewScroll>
                </WeaRightMenu>
            </WeaDialog>
        )
    }
    getBottomButtons(){
        const {contentStore} = this.props;
        const {handleDialog,rightMenu} = contentStore;
        let btnArr = []; 
        rightMenu && rightMenu.length>0  && rightMenu.map(m=>{
            m.isTop == '1' && btnArr.length < 4 && btnArr.push(
                <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@r6qjcz@${m.type}`} type="primary" 
                    onClick={()=>{
                        if(m.type == "BTN_SAVE"){ //保存
                           this.saveTaskInfo();
                         }
                    }} 
                    disabled = {this.state.loading}
                    >
                    {m.menuName}
                </Button>
            );
        });
        btnArr.push(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@e8ikk2@close`}  type="primary" disabled = {this.state.loading}  onClick={()=>{handleDialog(false)}}>{getLabel(309,"关闭")}</Button>)  
        return btnArr;
    }
    getRightMenu(){
        const {contentStore} = this.props;
        const {handleDialog,rightMenu} = contentStore;
        let btnArr = []; 
        rightMenu && rightMenu.length>0 && rightMenu.map(m=>{
            btnArr.push({
                icon: <i className={m.menuIcon} />,
                content: m.menuName,
                disabled : this.state.loading
            })
        });
    	return btnArr
    }
    onRightMenuClick(key){
        const {contentStore} = this.props;
        const {handleDialog,rightMenu} = contentStore;
        let that = this;
        rightMenu &&  rightMenu.length>0  && rightMenu.map((m,i)=>{
        	if(Number(key) == i){
                if(m.type == "BTN_SAVE"){ //验收
                    this.saveTaskInfo();
                }else if(m.type == 'BTN_BACK'){  //返回
                    //showCptInfo(true,{capitalid:capitalid,viewtype:'edit'});
                }
            }
        });
    }
    saveTaskInfo= (params={})=>{
        const {prjid,contentStore,callBack} = this.props;
        const {handleDialog,taskForm,taskInfo,type,taskid,baseParams,validateRules} = contentStore;
        taskForm.validateForm().then(f=>{
            if(f.isValid){
                this.setState({loading:true});
                let newParams = {...baseParams,...toJS(taskForm.getFormParams()),method:type,taskid:taskid,prjid:prjid||"",...params};   
                Task_Apis.saveTaskInfo(newParams).then(data=>{
                    if(data.success){
                        handleDialog(false);
                        message.success(getLabel(18758, "保存成功"));
                        if(callBack){
                            callBack();
                        }else{
                            window._table.reLoad();
                        }
                    }else{
                        message.error(getLabel(383746,"请求失败")+": "+data.msgcode);
                    }
                    this.setState({loading:false});
                })
            }else{
                f.showErrors();
            }
        });
    }
 
}
